package net.xdclass.springboot.controller;

import jakarta.servlet.http.HttpServletRequest;
import net.xdclass.springboot.domain.ServerSettings;
import net.xdclass.springboot.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@RestController
public class GetController {
    private Map<String, Object> param = new HashMap<>();
    /**
     * 根据城市ID和用户ID获取用户信息
     * 该方法处理GET请求，并根据路径变量提取城市ID和用户ID
     * 主要作用是演示如何在请求中使用路径变量来获取信息
     *
     * @param cityId 城市的唯一标识符
     * @param userId 用户的唯一标识符
     * @return 包含城市ID和用户ID的参数对象
     */
//    @RequestMapping(path = "/{city_id}/{user_id}", method = RequestMethod.GET)
//    public Object findUser(@PathVariable("city_id") String cityId, @PathVariable("user_id") String userId) {
//        // 清空参数对象以确保没有遗留的旧数据
//        param.clear();
//        // 存储从请求路径提取的城市ID和用户ID
//        param.put("cityId", cityId);
//        param.put("userId", userId);
//        // 返回包含城市ID和用户ID的参数对象
//        return param;
//    }

    @GetMapping(path = "/{city_id}/{user_id}/de")
    public Object findUser1(@PathVariable("city_id") String cityId, @PathVariable("user_id") String userId) {
        // 清空参数对象以确保没有遗留的旧数据
        param.clear();
        // 存储从请求路径提取的城市ID和用户ID
        param.put("cityId", cityId);
        param.put("userId1", userId);
        // 返回包含城市ID和用户ID的参数对象
        return param;
    }

    @GetMapping(path = "/v1/page_user1")
    public Object pageUser(int from, int size) {
        // 清空参数对象以确保没有遗留的旧数据
        param.clear();
        param.put("from", from);
        param.put("size", size);
        param.put("size1111手dfdf动阀手动ddd阀1asd", size);
        return param;
    }

    @GetMapping(path = "/v1/page_user2")
    public Object pageUserV2(@RequestParam(defaultValue = "0", name = "page") int from, int size) {
        // 清空参数对象以确保没有遗留的旧数据
        param.clear();
        param.put("from", from);
        param.put("size", size);
        return param;
    }

    /**
     * 用户保存接口V1
     * 该接口接收用户信息并进行保存操作
     *
     * @param user 用户对象，包含用户的相关信息
     * @return 返回保存后的用户信息
     */
    @RequestMapping(path = "/v1/save_user")
    public Object saveUserV1(@RequestBody User user) {
        // 清空参数对象以确保没有遗留的旧数据
        param.clear();
        // 将接收到的用户信息放入参数对象中
        param.put("user", user);

        // 返回保存后的用户信息
        return param;
    }
    @GetMapping(path = "/v1/get_header")
    public Object getHeader(@RequestHeader("access_token") String accessToken, String id) {
        // 清空参数对象以确保没有遗留的旧数据
        param.clear();
        // 将接收到的用户信息放入参数对象中
        param.put("accessToken", accessToken);
        param.put("id", id);

        // 返回保存后的用户信息
        return param;
    }
    @GetMapping(path = "/v1/test_request")
    public Object test_request(HttpServletRequest request) {

        param.clear();
        String id = request.getParameter("id");
        param.put("id", id);
        return param;
    }

    @Autowired
    private ServerSettings serverSettings;
    @GetMapping(path = "/v1/test_properties")
    public Object test_properties(HttpServletRequest request) {

        return serverSettings;
    }
}